from generadores import *
from rn_utils import *
def estocastico(net, aleatorios):
	print "Test Estocastico"
	espurios = []
	for p in aleatorios:
		e,s = net.Evaluar(p, estocastic=True)
		if not pertenece(s,net.patrones):
			espurios.append((p,s,e))
	f = file('resultados/Est_espurios.out', 'w')
	for x in espurios:
		f.write("Entrada:  " + ArrayToBinary(x[0]) + "\n")
		f.write("Espurio:   " + ArrayToBinary(x[1]) + "\n")
		f.write("Energia:  " + str(x[-1][-1]) + "\n\n")
	f.close()
	print  "Espurios", len(espurios)
	if len(espurios) > 0:
		arc = file("resultados/Est_espurios_energia", 'w')
		for iter in range(len(espurios[0][-1])):
			energia = []
			for patron in range(len(espurios)):
				energia.append(str(espurios[patron][-1][iter]))
			arc.write(' '.join(energia) + '\n')
		arc.close()
	cont = 0
	for p in net.patrones:
		p = -p
		e,s = net.Evaluar(p,estocastic=True)
		if all(s == p):
			cont += 1
	print "Opuestos es espurios",cont == len(net.patrones)
	c2 = 0
	for x in range(0,len(net.patrones),2):
		p = net.patrones[x]
		p1 = net.patrones[x + 1]
		t = - sign(p + p1 + 1)
		e,s = net.Evaluar(p, estocastic=True)
		if all(s == t):
			c2 += 1
	print "Suma es espurio", c2 == len(net.patrones)/2
	return espurios